package cn.itcast.netty.c3.u5;

import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.SocketChannel;

/**
 * WriteClient类是一个简单的NIO客户端程序，用于从服务器接收数据并统计接收到的数据总量。
 * 它使用SocketChannel建立与服务器的连接，并通过循环不断读取服务器发送的数据。
 */
public class WriteClient {
    /**
     * 程序的主入口方法
     *
     * @param args 命令行参数（本程序中未使用）
     * @throws IOException 如果发生I/O错误
     */
    public static void main(String[] args) throws IOException {
        // 创建SocketChannel并连接到指定地址的服务器
        SocketChannel sc = SocketChannel.open();
        sc.connect(new InetSocketAddress("localhost", 8080));

        // 3. 接收数据
        int count = 0; // 用于统计接收到的数据总量（字节数）
        while (true) {
            // 创建1MB大小的缓冲区
            ByteBuffer buffer = ByteBuffer.allocate(1024 * 1024);
            // 从通道读取数据到缓冲区，并累加读取的字节数
            count += sc.read(buffer);
            // 打印当前已接收的总字节数
            System.out.println(count);
            // 清空缓冲区，准备下一次读取
            buffer.clear();
        }
    }
}
